/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.edu.cibertec.action;

import static com.opensymphony.xwork2.Action.SUCCESS;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import org.apache.struts2.dispatcher.SessionMap;
import org.apache.struts2.interceptor.SessionAware;
import pe.edu.cibertec.model.Laboratorio;

/**
 *
 * @author Athenas
 */
public class LaboratorioAction extends ActionSupport {

    private Laboratorio laboratorio;
    private List<Laboratorio> listaLaboratorios;

    private String codigo;
    private String mensaje;
    List<Laboratorio> listaAgregada = new ArrayList<Laboratorio>();

    public Laboratorio getLaboratorio() {
        return laboratorio;
    }

    public void setLaboratorio(Laboratorio laboratorio) {
        this.laboratorio = laboratorio;
    }

    public List<Laboratorio> getListaLaboratorios() {
        return listaLaboratorios;
    }

    public void setListaLaboratorios(List<Laboratorio> listaLaboratorios) {
        this.listaLaboratorios = listaLaboratorios;
    }

    public String getCodigo() {
        return codigo;
    }

    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }

    public String getMensaje() {
        return mensaje;
    }

    public void setMensaje(String mensaje) {
        this.mensaje = mensaje;
    }

    public String inicioInsertar() {
        return SUCCESS;

    }

    public String insertar() throws Exception {
        System.out.println("" + laboratorio.getCodigo());
        System.out.println("" + laboratorio.getLocal());
        System.out.println("" + laboratorio.getNombre());
        System.out.println("" + laboratorio.getEstado());
        System.out.println("" + laboratorio.getCapacidad());
        /**/
        List<Laboratorio> laboratorios;
        Map sesion = ActionContext.getContext().getSession();
        Object objSession = sesion.get("laboratorios");
        if (objSession == null) {
            laboratorios = new ArrayList<Laboratorio>();
            laboratorios.add(laboratorio);
            sesion.put("laboratorios", laboratorios);
        } else {
            laboratorios = (List<Laboratorio>) sesion.get("laboratorios");
            laboratorios.add(laboratorio);
            sesion.put("laboratorios", laboratorios);
        }

        /**/
//        listaAgregada.add(laboratorio);
//        listaLaboratorios = listaAgregada;
//        Map sesion = ActionContext.getContext().getSession();
        //guardamos objetos en sesion
//        sesion.put("laboratorios", listaLaboratorios);
        return "inserto_OK";
    }

    public String eliminar() throws Exception {

        //setMensaje(getText("gch.programa.error.noexiste"));
//        laboratorio = new Laboratorio();
//        laboratorio.setCodigo(Integer.parseInt(codigo));
        // setMensaje(getText("gch.programa.exito.eliminar"));
        Map sesion = ActionContext.getContext().getSession();
        List<Laboratorio> laboratorios = (List<Laboratorio>) sesion.get("laboratorios");
        Laboratorio remover = null;
        breakLoop:
        for (Laboratorio lab : laboratorios) {
            if (Integer.toString(lab.getCodigo()).equals(getCodigo())) {
                remover = lab;
                laboratorios.remove(remover);
                break breakLoop;

            }
        }

        sesion.remove(remover);
        listaLaboratorios = laboratorios;
        mensaje = getText("mensaje.eliminado_ok",
                new String[]{codigo});

        return SUCCESS;

    }

    public String buscarLaboratorioPorCodigo() throws Exception {

        Map sesion = ActionContext.getContext().getSession();

        List<Laboratorio> laboratorios = (List<Laboratorio>) sesion.get("laboratorios");

        boolean registros = false;
        if (!laboratorios.isEmpty()) {
            for (int i = 0; i < laboratorios.size(); i++) {
                if (laboratorios.get(i).getCodigo() == laboratorio.getCodigo()) {
                    registros = true;
                    laboratorio = laboratorios.get(i);
                    laboratorios.clear();
                    laboratorios.add(laboratorio);
                    listaLaboratorios = laboratorios;
                }
            }
            if (registros == false) {
                mensaje = getText("mensaje.sin_registros",
                        new String[]{codigo});
            }

        } else {
            mensaje = getText("mensaje.sin_registros",
                    new String[]{codigo});
        }
        System.out.println("labo" + laboratorio.getCodigo());
        return SUCCESS;

    }

//    public void inicializarDataDura() {
//
//        //inicializar lista de operadores según país de cliente  - según IP
//        listaLaboratorios = new ArrayList<Laboratorio>();
//        Map sesion = ActionContext.getContext().getSession();
//        Object objSession = sesion.get("laboratorios");
//        //guardamos objetos en sesion
//        if (objSession == null) {
//            laboratorio = new Laboratorio();
//
//            laboratorio.setCodigo(1);
//            laboratorio.setNombre("Laboratorio Fisica ");
//            laboratorio.setDescripcion("Laboratorio Fisica Nuclear");
//            laboratorio.setLocal("Miraflores");
//            laboratorio.setCapacidad(50);
//            laboratorio.setEstado('Y');
//
//            listaLaboratorios.add(laboratorio);
//
//            laboratorio = new Laboratorio();
//            laboratorio.setCodigo(2);
//            laboratorio.setNombre("Laboratorio Quimica Organica");
//            laboratorio.setDescripcion("Laboratorio Quimica");
//            laboratorio.setLocal("San Isidro");
//            laboratorio.setCapacidad(70);
//            laboratorio.setEstado('N');
//
//            listaLaboratorios.add(laboratorio);
//            sesion.put("laboratorios", getListaLaboratorios());
//            laboratorio = new Laboratorio();
//        } else {
//            listaLaboratorios = (List<Laboratorio>) sesion.get("laboratorios");
//        }
//    }
    public String cargarEliminacion() throws Exception {
        //inicializarDataDura();
        return SUCCESS;

    }

    public String inicioActualizar() throws Exception {
        Map sesion = ActionContext.getContext().getSession();
        List<Laboratorio> laboratorios = (List<Laboratorio>) sesion.get("laboratorios");
        Laboratorio laboratorio_encontrado = null;
        breakLoop:
        for (Laboratorio lab : laboratorios) {
            if (Integer.toString(lab.getCodigo()).equals(getCodigo())) {
                laboratorio_encontrado = lab;
                this.laboratorio = laboratorio_encontrado;
                break breakLoop;
            }
        }
        return SUCCESS;
    }

    public String actualizar() throws Exception {
        Map sesion = ActionContext.getContext().getSession();
        int codigo_lab = this.laboratorio.getCodigo();
        List<Laboratorio> laboratorios = (List<Laboratorio>) sesion.get("laboratorios");
        boolean registros = false;
        for (int i = 0; i < laboratorios.size(); i++) {
            if (laboratorios.get(i).getCodigo() == codigo_lab) {
                laboratorios.set(i, this.laboratorio);
            }

        }
        sesion.put("laboratorios", laboratorios);
        return "actualizar_OK";
    }

    public String mantenimiento() throws Exception {
//        inicializarDataDura();
        Map sesion = ActionContext.getContext().getSession();
        this.listaLaboratorios = (List<Laboratorio>) sesion.get("laboratorios");
        return SUCCESS;
    }

}
